package com.ruoyi.ymapp.user.service.impl;

import java.util.HashMap;
import java.util.List;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.ymapp.user.service.enums.LoginOrRegisterExceptionEnum;
import com.ruoyi.ymapp.user.utils.JsonData;
import com.ruoyi.ymapp.user.domain.YmUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.ymapp.user.mapper.YmUserMapper;
import com.ruoyi.ymapp.user.service.IYmUserService;

/**
 * 用户信息管理Service业务层处理
 *
 * @author Lu.F
 * @date 2022-11-07
 */
@Service
@Slf4j
public class YmUserServiceImpl implements IYmUserService
{
    @Autowired
    private YmUserMapper ymUserMapper;

    /**
     * 查询用户信息管理
     *
     * @param id 用户信息管理主键
     * @return 用户信息管理
     */
    @Override
    public YmUser selectYmUserById(Long id)
    {
        return ymUserMapper.selectYmUserById(id);
    }

    /**
     * 查询用户信息管理列表
     *
     * @param ymUser 用户信息管理
     * @return 用户信息管理
     */
    @Override
    public List<YmUser> selectYmUserList(YmUser ymUser)
    {
        return ymUserMapper.selectYmUserList(ymUser);
    }

    @Override
    public JsonData selectYmUserList(String uTell, String uPwd) {
        if (!StringUtils.isBlank(uTell)&&!StringUtils.isBlank(uPwd)) {
            YmUser ymUser = new YmUser();
            ymUser.setUtell(uTell);
            List<YmUser> ymUsers = ymUserMapper.selectYmUserList(ymUser);
            // 未查询到数据
            if (ymUsers.size() != 1) {
                return JsonData.buildError(LoginOrRegisterExceptionEnum.USER_NOT_EXISTS.getDesc());
            }
            // 密码错误
            if (!ymUsers.get(0).getUpwd().equals(uPwd)) {
                return JsonData.buildError(LoginOrRegisterExceptionEnum.LOGIN_ERROR.getDesc());
            }
            // 登录成功，响应回用户的uid（前端需要），以及tokenId作为token令牌——权限管理
            HashMap<String, Object> dataMap = new HashMap<>();
            dataMap.put("uid",ymUsers.get(0).getId());
            dataMap.put("tokenId", UUID.randomUUID().toString().replace("-",""));
            return JsonData.buildSuccess(dataMap);
        }

        return JsonData.buildError(LoginOrRegisterExceptionEnum.PARAM_NOT_VALIDATE.getDesc());
    }

    /**
     * 新增用户信息管理
     *
     * @param ymUser 用户信息管理
     * @return 结果
     */
    @Override
    public int insertYmUser(YmUser ymUser) {
        return ymUserMapper.insertYmUser(ymUser);
    }

    @Override
    public JsonData insertYmUser(String uTell, String uPwd) {
        if (!StringUtils.isBlank(uTell)&&!StringUtils.isBlank(uPwd)) {
            YmUser ymUser = new YmUser();
            ymUser.setUtell(uTell);
            ymUser.setUpwd(uPwd);
            int resNum = 0;
            try {
                resNum = ymUserMapper.insertYmUser(ymUser);
            }catch (Exception e){
                log.error("register error:",e);
                return JsonData.buildError(LoginOrRegisterExceptionEnum.USER_EXISTS.getDesc());
            }

            return JsonData.buildSuccess(resNum);
        }
        return JsonData.buildError(LoginOrRegisterExceptionEnum.PARAM_NOT_VALIDATE.getDesc());
    }

    /**
     * 修改用户信息管理
     *
     * @param ymUser 用户信息管理
     * @return 结果
     */
    @Override
    public int updateYmUser(YmUser ymUser)
    {
        return ymUserMapper.updateYmUser(ymUser);
    }

    /**
     * 批量删除用户信息管理
     *
     * @param ids 需要删除的用户信息管理主键
     * @return 结果
     */
    @Override
    public int deleteYmUserByIds(Long[] ids)
    {
        return ymUserMapper.deleteYmUserByIds(ids);
    }

    /**
     * 删除用户信息管理信息
     *
     * @param id 用户信息管理主键
     * @return 结果
     */
    @Override
    public int deleteYmUserById(Long id)
    {
        return ymUserMapper.deleteYmUserById(id);
    }
}
